import axios from 'axios';

// 创建 Axios 实例
const instance = axios.create({
    baseURL: "http://localhost:3000/", // 从环境变量中获取API基础URL
    timeout: 5000,
    headers: {
        'Content-Type': 'application/json',
    },
});

// 请求拦截器
instance.interceptors.request.use(
    (config) => {
        // 在这里可以添加请求前的操作，比如设置 token
        /*const token = localStorage.getItem('token');
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }*/
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);

// 响应拦截器
instance.interceptors.response.use(
    (response) => {
        //response.data的数据结构是{status: "success", msg: '信息', data: {}}，根据status是否是success进行成功判断
        const resData = response.data || {}; //如果 response.data 未定义或为空，则用空对象替代，增强稳定性
        if (resData.status === 'success') {
            return response.data.data;
        }else {
            return Promise.reject(resData.msg);
        }
    },
    (error) => {
        /*// 在这里处理错误，例如检查状态码并进行相应操作
        if (error.response) {
            switch (error.response.status) {
                case 401: // 未授权
                          // 清除本地存储的 token 并跳转到登录页面
                    localStorage.removeItem('token');
                    // 重定向到登录页面
                    // 注意：这里的 this.$router 应该在一个 Vue 组件上下文中使用
                    // 如果在非组件中使用，需要通过其他方式注入 router
                    if (typeof window !== 'undefined' && window.location) {
                        window.location.href = '/login';
                    }
                    break;
                case 403: // 禁止访问
                          // 处理403错误
                    break;
                case 404: // 未找到
                          // 处理404错误
                    break;
                // 其他状态码处理...
            }
        }*/
        return Promise.reject(error);
    }
);

export default instance;